﻿<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
    targetNamespace="http://metalx.org/i386/Functions/Matrix"
    elementFormDefault="qualified"
    xmlns="http://metalx.org/i386/Functions/Matrix"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

	<xsd:element name="CreateObject">
		<xsd:annotation>
			<xsd:documentation>
				Creates a new Matrix object using the values at the specified address.

				Input:
				SI=Matrix

				Output:
				DI=Object
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType/>
	</xsd:element>

	<xsd:element name="Zero">
		<xsd:annotation>
			<xsd:documentation>
				Sets a matrix to an empty matrix.

				Input:
				SI=Matrix
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType/>
	</xsd:element>

	<xsd:element name="Identity">
		<xsd:annotation>
			<xsd:documentation>
				Sets a matrix to a identity matrix.

				Input:
				SI=Matrix
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType/>
	</xsd:element>

	<xsd:element name="RotateX">
		<xsd:annotation>
			<xsd:documentation>
				Sets a matrix to a X-axis rotation matrix.

				Input:
				SI=Matrix
				ST0=Radians
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType/>
	</xsd:element>

	<xsd:element name="RotateY">
		<xsd:annotation>
			<xsd:documentation>
				Sets a matrix to a Y-axis rotation matrix.

				Input:
				SI=Matrix
				ST0=Radians
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType/>
	</xsd:element>

	<xsd:element name="RotateZ">
		<xsd:annotation>
			<xsd:documentation>
				Sets a matrix to a Z-axis rotation matrix.

				Input:
				SI=Matrix
				ST0=Radians
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType/>
	</xsd:element>

	<xsd:element name="ScaleUniform">
		<xsd:annotation>
			<xsd:documentation>
				Sets a matrix to a uniform scale matrix.

				Input:
				SI=Matrix
				ST0=Scale
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType/>
	</xsd:element>

	<xsd:element name="Scale">
		<xsd:annotation>
			<xsd:documentation>
				Sets a matrix to a scale matrix.

				Input:
				SI=Matrix
				ST0=ScaleX
				ST1=ScaleY
				ST2=ScaleZ
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType/>
	</xsd:element>

	<xsd:element name="Multiply">
		<xsd:annotation>
			<xsd:documentation>
				Multiplies a matrix by another matrix.

				Input:
				SI=Matrix1
				AX=Matrix2
				DI=Destination
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType/>
	</xsd:element>

	<xsd:element name="ToString">
		<xsd:annotation>
			<xsd:documentation>
				Converts a matrix value to a string.

				Input:
				SI=Address

				Output:
				DI=String

				Modifies: AX BX CX DX
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType/>
	</xsd:element>
</xsd:schema>
